from numpy import *
from math import *

print("="*75)
# EJERCICIO 1 =================================================================
# ECUACION CUADRÁTICA ---------------------------------------------------------

# a*x^2+b*x+c=0
a = 1
b = -7
c = -18

def eq_cuadratica(a, b, c):
    if b**2 -4*a*c < 0:
        return "Discriminante negativo"
    else:    
        sol1 = float((-b+sqrt(b**2 -4*a*c))/2*a)
        sol2 = float((-b-sqrt(b**2 -4*a*c))/2*a)
        return sol1, sol2

sol = eq_cuadratica(a, b, c)
if sol == "Discriminante negativo \n":
    print(sol)
else:
    print(f"Solución de ({a}*x^2 + {b}*x + {c}): {sol[0]:.2f} y {sol[1]:.2f}")
print("="*75)

# SUMAS -----------------------------------------------------------------------

# c_k = 1/k; k = 1, 2, 3, ...

def c_k(k):
    return 1/k

def diff_c_k(k):
    return abs(c_k(k+1)-c_k(k))

i = 1
while diff_c_k(i) > 0.075:
    i += 1

print(f"Para k = {i}, se cumple: |1/{i+1} - 1/{i}| = {diff_c_k(i):.3f} <= 0.075")
print("="*75)

# EJERCICIO 2 =================================================================

def sumatorio(k):
    sum = 0
    s = 1
    for n in range(k):
        sum += 1/(s)
        s += 1
    return sum

j = 1
while diff_c_k(j) > 0.005:
    j += 1

print(f"Para k = {j}, se cumple: |1/{j+1} - 1/{j}| = {diff_c_k(j):.3f} <= 0.005 \n \t Suma (desde k = 1 hasta k = {j}) de 1/k = {sumatorio(j):.5f}")
print("="*75)

# EJERCICIO 3 =================================================================

def fun(num1, num2):
    return num1+num2, num1*num2, num1**2 + num2**2

num1, num2 = 7, 10
sol = fun(num1, num2)

print(f"La suma de {num1} + {num2} es: {sol[0]} \nEl producto de {num1} por {num2} es: {sol[1]} \nLa suma de los cuadrados de {num1} y {num2} es: {sol[2]}")
print("="*75)

# EJERCICIO 4 =================================================================

N = 12669598480

def producto_cuatro_numeros_consecutivos(q):
    return q*(q+1)*(q+2)*(q+3)

m = 0
while producto_cuatro_numeros_consecutivos(m) < N:
    m += 1
print(f"{m}*{m+1}*{m+2}*{m+3} = {producto_cuatro_numeros_consecutivos(m-1)}")
print("="*75)